#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

// 函数用于将两个大数字符串相乘
std::string multiplyLargeNumbers(const std::string& num1, const std::string& num2) {
    int n1 = num1.size();
    int n2 = num2.size();
    if (n1 == 0 || n2 == 0) return "0";  // 如果任何一个数字为空，返回 "0"

    // 结果最多可以有 n1 + n2 位
    std::vector<int> result(n1 + n2, 0);

    // 用于跟踪结果中的位置
    int i_n1 = 0;
    int i_n2 = 0;

    // 遍历 num1 的所有数字
    for (int i = n1 - 1; i >= 0; i--) {
        int carry = 0;
        int n1_digit = num1[i] - '0';  // 将字符转换为数字

        // 每处理一个 num1 的数字，左移一位
        i_n2 = 0;

        // 遍历 num2 的所有数字
        for (int j = n2 - 1; j >= 0; j--) {
            int n2_digit = num2[j] - '0';  // 将字符转换为数字

            // 计算当前位的乘积并加上之前的结果和进位
            int sum = n1_digit * n2_digit + result[i_n1 + i_n2] + carry;

            // 计算新的进位
            carry = sum / 10;

            // 存储当前位的结果
            result[i_n1 + i_n2] = sum % 10;

            i_n2++;
        }

        // 如果有剩余的进位，存储在下一位
        if (carry > 0) result[i_n1 + i_n2] += carry;

        // 移动到 num1 的下一位
        i_n1++;
    }

    // 忽略结果中前导的零
    int i = result.size() - 1;
    while (i >= 0 && result[i] == 0) i--;

    // 如果结果全为零，返回 "0"
    if (i == -1) return "0";

    // 生成最终结果字符串
    std::string s = "";
    while (i >= 0) s += std::to_string(result[i--]);

    return s;
}

